#include <stdlib.h>
#include "./LinearGList.h"

// 创建
GLNode *createGL(char *s) {
  GLNode *h = NULL;
  // 一个一个扫描字符
  char ch;
  ch = *s;
  s++;
  if('\0' != ch) {
    // 字符串未结束
    if('(' == ch) {
      h = (GLNode*)malloc(sizeof(GLNode));
      // 新结点为子表
      h->tag = LIST;
      h->un.subList = createGL(s);
    } else if(')' == ch) {
      // 子表结束
      h = NULL;
    } else {
      // 新结点为原子
      h = (GLNode*)malloc(sizeof(GLNode));
      h->tag = ATOM;
      h->un.data = ch;
    }
  }

  ch = *s;
  s++;
  if(h != NULL) {
    if(',' == ch) {
      h->nextp = createGL(s);
    } else {
      h->nextp = NULL;
    }
  }
  return h;
}

// 展示
void DispGL(GLNode* g) {
  if(g == NULL) {
    return;
  }

  // 存在表
  if(g->tag == LIST) {
    // 子表
  } else {
    // yuanzi
  }
}

int main() {
  GLNode *gList =  createGL("(a,(b,c),(d))");
  return 0;
}